package com.jrx.anytxn.param.service.aviator;


import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.param.dto.aviator.RequestRulePageReq;
import com.jrx.anytxn.param.dto.aviator.RuleReq;
import com.jrx.anytxn.param.dto.aviator.RuleRes;

import java.util.List;

/**
 * @author Aning
 * @date 2018-11-08
 */
public interface IRuleService {
    /**
     * 创建规则
     *
     * @param req 规则对象
     */
    void registerRule(RuleReq req);

    /**
     * 更新规则
     *
     * @param req 规则对象
     */
    void modifyRule(RuleReq req);

    /**
     * 根据ID或者给咱类型删除规则
     *
     * @param req 规则对象
     */
    void cancelByIdOrRuleType(RuleReq req);

    /**
     * 批量删除规则
     *
     * @param ids
     */
    void cancelByIds(List<Long> ids,String tenantId);

    /**
     * 据规则ID或者规则类型查询规则
     *
     * @param req 规则对象
     * @return List<RuleDTO>
     */
    List<RuleRes> getByIdOrRuleTypeRule(RuleReq req);

    List<RuleRes> getByIdAndTenIdAndType(RuleReq req);

    /**
     * 分页查询
     * @param requestRulePageDTO
     * @return TxnPage<RuleRes>
     */
    TxnPage<RuleRes> getPageByRuleType(RequestRulePageReq requestRulePageDTO);
}
